import request from "../utils/request";

/**
 * 封装专业申报管理相关的API请求
 */
class MajorApplicationRequest {

    /**
     * 查询专业申报列表（分页、筛选）
     * @param {object} [options={}] - 包含分页和筛选参数的对象
     * @param {number} [options.page=1] - 页码
     * @param {number} [options.size=10] - 每页数量
     * @param {string} [options.studentName] - 按考生姓名模糊查询
     * @param {string} [options.idCardNo] - 按身份证号精确查询
     * @param {number} [options.majorPlanId] - 按申报的专业ID查询
     * @param {string} [options.status] - 按审核状态查询 (PENDING, APPROVED, REJECTED)
     * @returns {Promise<object>} - 标准分页列表数据 { total, pages, current, size, records }
     */
    async getList({ page, size, studentName, idCardNo, majorPlanId, status } = {}) {
        const listData = await request({
            url: '/major-applications',
            method: 'get',
            params: {
                page,
                size,
                studentName,
                idCardNo,
                majorPlanId,
                status
            },
        });
        return listData;
    }

    /**
     * 审批通过专业申报
     * @param {number|string} id - 要审批的申报记录ID
     * @param {string} [notes] - 审核意见/备注 (可选)
     * @returns {Promise<object>} - 更新后的申报记录对象
     */
    async approve(id, notes = '') {
        const updatedApplication = await request({
            url: `/major-applications/${id}/approve`,
            method: 'put',
            data: {
                notes
            },
        });
        return updatedApplication;
    }

    /**
     * 审批拒绝专业申报
     * @param {number|string} id - 要审批的申报记录ID
     * @param {string} notes - 拒绝原因 (必填)
     * @returns {Promise<object>} - 更新后的申报记录对象
     */
    async reject(id, notes) {
        const updatedApplication = await request({
            url: `/major-applications/${id}/reject`,
            method: 'put',
            data: {
                notes
            },
        });
        return updatedApplication;
    }
}

// 导出类的实例，方便在其他地方直接调用方法
export default new MajorApplicationRequest();